An audio fixed function processor has hardware blocks that perform specific functions on audio data such as sample rate conversion, filtering, equalization, occlusion, pan, compression (dynamic range) and so on. A (typically) large audio flow graph describes how audio data from sound sources (which may be on the order of thousands in a video game application) are to be processed by the blocks and sub-mixed with other processed data, before going to the next block, and so forth. This audio flow graph is walked to perform the processing and mixing into the final output.
Heretofore providing the audio data to the fixed function blocks needed complex processing and a large amount of local memory for input and output samples, and/or a large amount of main memory bandwidth to import/export the audio samples. For example, when the software reaches a node in the graph, the software needs to fetch the audio data from the source specified in the node, provide it to the specified function block, track when the function block is done with processing, manage the mixing the output of the block, move to the next node and so forth.